import { mapGetters } from "vuex";
import dayjs from "dayjs";
export default {
	computed: {
		...mapGetters(["userInfo", 'tabbarList'])
	},
	methods: {
		updateParentUserId() {
			const option = uni.getLaunchOptionsSync();
			let parent_user_id = 0
			if (option && option.query && option.query.parent_user_id) {
				parent_user_id = option.query.parent_user_id
				uni.setStorageSync('parent_user_id', parseInt(parent_user_id));
			}
			const parentUserId = uni.getStorageSync('parent_user_id');  
			if (parentUserId && this.userInfo.id && this.userInfo.id !== parentUserId && !this.userInfo.parent_user_id) {
				this.$api.updateUser(this.userInfo.id, {
					parent_user_id: parentUserId
				})
			}
		},
	  setAgree2(key) {
		  uni.navigateTo({
			  url: '/pages/login/service?key=' + key
		  })
	  },
	  beforeSwitch(e) {
		  console.log(e)
		  if (e === 2) {
			  this.$goPage({
				  url: '/pages/userPost/publish'
			  })
		  } else {
			  this.$goPage({
			  	url: '/' + this.list[e].pagePath,
				  switchTab: true
			  })
		  }
	  },
 	getAppPosition() {
		uni.getLocation({
			type: 'gcj02',
			geocode: true,
			success: function(res) {
				console.log('**定位信息', res);
				uni.setStorageSync('location',res)
			},
			fail: function(err) {

			}
		});
		uni.setStorageSync('location',res)
	},
    toUrl(page,isAuth) {
		if(isAuth){
			let userInfo = uni.getStorageSync('userInfo') || {}
			console.log('userInfo',userInfo)
			if(!userInfo.id){
				uni.showToast({
					title:'请先登录',
					icon:'none'
				})
				return;
			}
		}
		uni.navigateTo({
			url:page
		})
    },
	formatDate(date,formatType){
		return dayjs(date).format(formatType);
	},

	  /**
	   * 检查登录状态
	   * @returns {boolean} 是否已登录
	   */
	  $checkLogin() {
		  return !!this.userInfo.id
	  },

	  /**
	   * 显示登录提示并跳转
	   * @returns {Promise} 返回Promise，用户确认后跳转到登录页
	   */
	  $showLoginModal() {
		  return new Promise((resolve, reject) => {
			  uni.showModal({
				  title: '提示',
				  content: '请先登录',
				  confirmText: '去登录',
				  cancelText: '取消',
				  success: (res) => {
					  if (res.confirm) {
						  this.$goPage({
							  url: '/pages/login/login',
						  })
						  resolve(true)
					  } else {
						  reject(false)
					  }
				  },
				  fail: () => {
					  reject(false)
				  }
			  })
		  })
	  },

	  /**
	   * 页面跳转方法
	   * @param {Object} options - 跳转参数
	   * @param {string} options.url - 跳转的页面路径
	   * @param {Object} [options.params] - 页面参数
	   * @param {boolean} [options.redirect=false] - 是否重定向（替换当前页面）
	   * @param {boolean} [options.reLaunch=false] - 是否重启应用
	   * @param {boolean} [options.switchTab=false] - 是否跳转到 tabBar 页面
	   * @param {boolean} [options.needLogin=false] - 是否需要登录
	   */
	  async $goPage({ url, params = {}, redirect = false, reLaunch = false, switchTab = false, needLogin = false }) {
		  // 如果需要登录且未登录，显示登录提示
		  if (needLogin && !this.$checkLogin()) {
			  try {
				  await this.$showLoginModal()
				  return // 用户确认登录后，跳转到登录页面，当前跳转终止
			  } catch {
				  return // 用户取消登录，终止跳转
			  }
		  }

		  // 处理参数
		  const query = Object.keys(params)
			  .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
			  .join('&')
		  const fullUrl = query ? `${url}?${query}` : url

		  // 根据不同的跳转方式执行
		  if (reLaunch) {
			  uni.reLaunch({ url: fullUrl })
		  } else if (redirect) {
			  uni.redirectTo({ url: fullUrl })
		  } else if (switchTab) {
			  uni.switchTab({ url: fullUrl })
		  } else {
			  uni.navigateTo({ url: fullUrl })
		  }
	  }
  },
}
